package cn.wmw.demo;

import java.sql.SQLOutput;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamDemo_3 {


    /**
     * 将多个同数据类型list整合成一个新的list集合
     * @param lists
     * @return
     */
    public List<Integer> merge(List<Integer>...lists){
        List<Integer> mergeList = Stream.of(lists).flatMap(Collection::stream).collect(Collectors.toList());
        return mergeList;
    }

    /**
     * 合并嵌套list
     * @param lists
     * @return
     */
    public List<Integer> nest(List<Integer>...lists){

        List<List<Integer>> beforeLists = Arrays.asList(lists);
        // 合并前
        System.out.println(beforeLists);
        // 合并之后的list
        List<Integer> nestList = beforeLists.stream().flatMap(Collection::stream).collect(Collectors.toList());
        return nestList;
    }

    /**
     * 分页功能
     * @param map
     * @param pageNum
     * @param pageSize
     * @return
     */
    public Map<String,Object> paging(Map<String,Object> map,Integer pageNum,Integer pageSize){
        Stream<Map.Entry<String, Object>> mapStream = map.entrySet().stream(); // 将Map转换为Stream
        int start = (pageNum - 1) * pageSize; // 计算分页起始位置
        int end = start + pageSize; // 计算分页结束位置
        Map<String, Object> pagedMap = mapStream.skip(start) // 跳过前start个元素
                .limit(pageSize) // 最多返回pageSize个元素
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); // 将结果转换回Map
        return pagedMap;

    }
}
